EC2 にセッションマネージャ経由で安全に接続する (キーペア不要)
こんにちは、クラスメソッドタイランドのPOPです。
セッションマネージャー経由でインスタンスに接続するには、Systems Manager に必要なインスタンスのアクセス許可を設定する必要があります。
ただし、「AmazonEC2RoleforSSM」ポリシーはまもなく廃止されます。EC2 インスタンスで AWS Systems Manager サービスのコア機能を有効にするには、「AmazonSSMManagedInstanceCore」ポリシーを使用してください。
詳細については、以下のリンクを参照してください。
Systems Manager に必要なインスタンスのアクセス許可を設定する
SSH 経由で EC2 インスタンスに頻繁に接続する際、セキュリティ グループのインバウンド ルールで毎回マイ IP を更新するのが面倒と感じることがあります。
そこで、今回は SSH キーやキーペアを使わずに、セッションマネージャ経由でインスタンスに接続する方法をご紹介します。
AWS Systems Manager の詳細については、以下のリンクを参照してください。
AWS Systems Manager とは
EC2 インスタンスのための IAM ロールを作成する
AWS Systems Manager サービスの IAM ロールを作成する方法については、以下のリンクを参照してください。
https://dev.classmethod.jp/articles/ssm-iam-role-for-use-with-ec2-instance/ (このブログは後で日本語版を翻訳します。)
※上記記事リンクは一例です。一部設定が異なる場合がございます。
この記事の、 「AWS Systems Manager サービスの IAM ロールを作成するための設定例」を参照することをお勧めします。
今回は以下のように AWS Systems Manager サービスの IAM ロールを作成します。
この記事の AWS Systems Manager サービスの IAM ロールの設定例であること。
「Identity and Access Management (IAM)」サービス画面に移動します。
左のメニューから「ロール」を選択し、「ロールを作成」をクリックします。ステップ 1
信頼されたエンティティを選択
・信頼されたエンティティタイプ:「AWS のサービス」
・ユースケース:「EC2」
・「次へ」をクリックします。ステップ 2
許可を追加
許可ポリシー
・ポリシー名:「AmazonSSMManagedInstanceCore」を検索して「✅️」チェックを入れます
・「次へ」をクリックします。ステップ 3
名前、確認、および作成
ロールの詳細
・ロール名:「ec2-ssm-managed-instance-core」(任意の名前を入力してください。)
・一番下までスクロールし、「ロールを作成」をクリックします。
※AWS Systems Manager サービスの IAM ロールを作成したら、EC2 インスタンスを作成する前にここをお読みください。
すでに EC2 インスタンス (Amazon Linux) をご利用中の方は、「IAM ロールを EC2 インスタンスに追加する」のトピックにスキップしてください。
EC2 インスタンスをまだ作成していない方は、以下の「EC2 インスタンスの作成」を参照してください。
EC2 インスタンスの作成
※EC2 インスタンスが作成済みであること。
EC2 インスタンスの作成方法については、以下のリンクを参照してください。
※上記記事リンクは一例です。一部設定が異なる場合がございます。
この記事の、「EC2 インスタンスを作成するための設定例」を参照することをお勧めします。
今回は「Amazon Linux 2023 AMI」として EC2 インスタンスを作成します。
EC2 インスタンスの作成中に、後から追加せずに EC2 インスタンスに IAM ロールを追加できます。
この記事の EC2 インスタンスの作成の設定例であること。
リージョン:「東京」
※Launch an instance
名前とタグ
名前:「pop-ec2-ssm」(任意の名前を入力してください)アプリケーションおよび OS イメージ (Amazon マシンイメージ)
Amazon マシンイメージ (AMI):「Amazon Linux 2023 AMI」インスタンスタイプ
インスタンスタイプ:「t3a.micro」(任意に応じてスペックを選択してください)キーペア (ログイン)
キーペア名 - 必須:「キーペアなしで続行 (推奨されません)」(今回はキーペアを使用しません)ネットワーク設定
ファイアウォール (セキュリティグループ)
セキュリティグループ名 - 必須:「pop-ec2-ssm」(任意の名前を入力してください)
説明 - 必須:「pop-ec2-ssm」(任意の説明を入力してください)
インバウンドセキュリティグループのルール
「削除」をクリックします (今回はこれを設定しません)__ストレージを設定 __
1x:「8」GiB:「gp3」ルートボリューム (暗号化なし) (デフォルト)※IAM ロールは「高度な詳細」で追加できます。
「高度な詳細」をクリックして画面を展開し、前に作成した「IAM ロール」を選択します。
IAM インスタンスプロフィール:「ec2-ssm-managed-instance-core」
IAM ロールを EC2 インスタンスに追加する
この手順は、後で EC2 インスタンスに IAM ロールを追加するやり方で、すでに EC2 インスタンス (Amazon Linux) を持っている方向けの例です。
まず、EC2 インスタンス画面に移動し、IAM ロールを確認します。
このように「IAM ロール: –」と表示されている場合は、まだ IAM ロールが追加されていないという意味です。
次に、「アクション」>「セキュリティ」>「IAM ロールを変更」を選択して、IAM ロールを追加します。
「IAM ロールを変更」画面に移動した後、作成した IAM ロール (例: "ec2-ssm-managed-instance-core") を選択し、「IAM ロールの更新」をクリックします。
次に、EC2 インスタンス画面に戻り、IAM ロールを再度確認します。IAM ロールが追加されていることがわかります。
セッションマネージャ経由でインスタンスに接続
EC2 インスタンス画面に移動し、「接続」をクリックします。
「セッションマネージャー」タブを選択し、「接続」をクリックします。
※3 ~ 5 分待っても、「接続」ボタンはまだクリックできない場合はEC2 インスタンスを再度停止/開始し、次の手順で セッションマネージャ経由でインスタンスへの接続をテストしてください。
その後、自動的に Systems Manager サービスのプロンプト画面に移動されます。
コマンドを実行してみる
それでは、基本的な Linux コマンドを実行してみましょう。
root 権限を持つユーザーとしてログインするためのコマンドを実行します。
sudo su -
サーバーを最新の状態に更新するためのコマンドを実行します。
yum update -y
ディレクトリやファイルの詳細情報を表示するコマンドを実行します。
ll
All Output (example)
sh-5.2$ sudo su -
[root@ip-xx-xx-xx-xx ~]# yum update -y
Last metadata expiration check: 0:18:49 ago on Mon Dec 2 10:33:33 2024.
Dependencies resolved.
Nothing to do.
Complete!
[root@ip-xx-xx-xx-xx ~]# ll
total 0
[root@ip-xx-xx-xx-xx ~]#
まとめ
セッションマネージャは、Systems Manager サービスの機能の 1 つであり、各インスタンスより便利かつ簡単に接続するのに役立ちます。
この記事がどなたかのお役に立てば幸いです。
以上、クラスメソッドタイランドのPOP(Tinnakorn Maneewong)でしたっ!
関連記事
・Amazon Linux 2023 を EC2 に作成し、PuTTY でサーバーに接続する方法 | DevelopersIO
・การสร้าง SSM สำหรับใช้กับ EC2 Instance | DevelopersIO (このブログは後で日本語版を翻訳します。)
・AWS Systems Manager とは - AWS Systems Manager
・Systems Manager に必要なインスタンスのアクセス許可を設定する - AWS Systems Manager